package com.whfc.fim.service;


import com.whfc.common.exception.BizException;
import com.whfc.common.result.PageData;
import com.whfc.fim.dto.FimPersonDTO;
import com.whfc.fim.dto.FimPersonImgDTO;
import com.whfc.fim.dto.FimPersonSyncDTO;
import com.whfc.fim.param.FimImportPersonParam;
import com.whfc.fim.param.FimPersonParam;
import org.springframework.web.multipart.MultipartFile;


import java.util.List;

/**
 * @Description: 人员管理 Service
 * @Author: qzexing
 * @Version: 1.0
 * @Date: 2020/3/16 15:03
 */
public interface FimPersonService {


    /**
     * 添加人员
     *
     * @param request 添加人员请求参数
     * @throws BizException
     */
    void add(FimPersonParam request) throws BizException;

    /**
     * 修改人员
     *
     * @param request 修改人员请求参数
     * @throws BizException
     */
    void edit(FimPersonParam request) throws BizException;

    /**
     * 获取人脸库列表(同步接口)
     *
     * @param pageNum  当前页
     * @param pageSize 每页大小
     * @param deptId   组织机构ID
     * @return 人脸库列表
     * @throws BizException
     */
    PageData<FimPersonSyncDTO> list(Integer pageNum, Integer pageSize, Integer deptId) throws BizException;

    /**
     * 获取人员列表
     *
     * @param pageNum  页码
     * @param pageSize 每页数量
     * @param deptId   组织机构ID
     * @param keyword  搜索关键字
     * @return 人员列表
     * @throws BizException
     */
    PageData<FimPersonDTO> list(Integer pageNum, Integer pageSize, Integer deptId, String keyword) throws BizException;


    /**
     * 删除人员
     *
     * @param personId 人员ID
     * @throws BizException
     */
    void del(Integer personId) throws BizException;

    /**
     * 导入劳务人员信息
     *
     * @param personList 人员列表
     * @throws BizException
     */
    void importEmp(List<FimPersonDTO> personList) throws BizException;

    /**
     * 根据图片ID获取图片地址
     *
     * @param imgIds 图片ID列表
     * @return 图片地址
     */
    List<String> getPersonImgByImgIds(List<Integer> imgIds);

    /**
     * 保存人员图片
     *
     * @param imgUrlList 人员图片列表
     * @return 图片信息
     */
    List<FimPersonImgDTO> savePersonImg(List<String> imgUrlList);

}
